کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

درس هفدهم : آموزش مدیریت رویداد ( Event Hhanding ) در Spring

آموزش مفهوم Event Handling ( مدیریت رویدادها ) در Spring

در کلیه مراحل آموزشی قبلی Spring ، متوجه شدید که بخش اصلی یک برنامه Spring محتوی ApplicationContext است که چرخه حیات کامل Bean ها در برنامه کنترل می کند .
ApplicationContext ، رویدادهای مشخصی را در هنگام لود و فراخوانی Bean های برنامه اجرا می کند . برای مثال ، رویداد ContextStartedEvent هنگامی مه Context شروع به لود کرده ، اجرا شده و رویداد ContextStopedEvent در هنگام پایان لود شدن Context رخ می دهد .
مدیریت رویدادها ( Event Handling ) در ApplicationContext را اجرا کند ، هربار که کلاس ApplicationEvent به ApplicationContext ارسال شود ، شی Bean از این عمل مطلع خواهد شد .
Spring شامل رویدادهای استاندارد زیر می باشد که به تشریح هر یک خواهیم پرداخت :


  • ContextResfreshed : این رویداد زمانی مه محتوی ApplicatinContext Event مقدار دهی اولیه ( initialized ) یا تازه ( Refresh ) می شود ، رخ می دهد . همچنین این رویداد را می توان با استفاده از متد refresh() رابط کاربری ApplicationContext اجرا نمود .
  • ContextStoppedEvent این رویداد زمانی که اجرا ApplicatinContext به استفاده از متد stop() رابط کاربری Configurable متوقف می شود ، رخ میدهد .

پس از متد ، می توانید کارهای مربوط به نگهداری و یهینه سازی سیستم را انجام دهید.


  • ContextClosedEvent : این رویداد زمانی رخ می دهد که ApplicationContext با استفاده از متد Closed() رابط کاربری Con بسته می شوید . context ای که بسته شود ، به انتهای چرخه حیات کاری خود خواهد رسید . این Context دیگر نمی تواند لود مجدد ( Refreshed ) یا شروع مجدد ( restart ) شود .
  • RequestHandledEvent : این رویداد یک event مختص فضای وب بوده و به کلیه Bean های برنامه اعلام می کند که به یک درخواست HTTP سرویس .
نکته:

مدیریت رویدادها در Spring ، یک پروسه تک عملیات (single thread ) است . بنابراین زمانی که یک رویدا اجرا می شود ، تا زمانی که کلیه گیرنده های آن رویداد پیام خود را دریافت کرده و به طور کامل اجرا شود ، سایر پروسه های برنامه متوقف شده و روال برنامه stop می شود .



گوش دادن به رویدادهای Context

برای گوش دادن به یک رویداد Context ، هر Bean بایستی رابط کاربری ApplicationListener را که فقط دارای یک متد به نام onApplicationEvent() را اجرا کند .
برای درک بهتر مطالب ارایه شده ، مثال عملی را مطرح می کنیم تا ببینیم رویدادها ( events ) چگونه منتشر شده و شما چگونه می توانید کدهای خود را طوری بنویسید تا اجرای آنها بسته به رخ دادن event ها باشند .
مثال عملی را با طی مراحل زیر در محیط Eclipse طراحی می کنیم :


  1. یک پروژه جدید به نام SpringExample و یک پکیج جدید را به نام com.tahlildadeh را در پوشه src برنامه ایجاد کنید .
  2. همانطور که در بخش نوشتن اولین برنامه با Spring آموزش دادیم ، کتابخانه های لازم برنامه را با استفاده از Extered JARs به پروژه اضافه کنید .
  3. کلاس های HelloWorld ، CStartEvantHandler ، CStopEventHandler و MainApp را در پکیج com.tahlildadeh ایجاد کنید .
  4. در پوشه src پروژه ، فایل پیکربندی اطلاعات Beans.xml را ایجاد کنید .
  5. مرحله آخر ایجاد محتوای کلیه فایل های جاوا پروژه و همچنین فایل پیکربندی اطلاعات Beans ها می باشد که در مراحل زیر توضیح داده شده است .

کد زیر را در فایل Hello.World.java قرار دهید :



package com.tutorialspoint;

 

public class HelloWorld {

   private String message;

 

   public void setMessage(String message){

      this.message  = message;

   }

 

   public void getMessage(){

      System.out.println("Your Message : " + message);

   }

}

همچنین محتوای فایل CStartEventHandler.java به صورت زیر است :



package com.tutorialspoint;

 

import org.springframework.context.ApplicationListener;

import org.springframework.context.event.ContextStartedEvent;

 

public class CStartEventHandler 

   implements ApplicationListener{

 

   public void onApplicationEvent(ContextStartedEvent event) {

      System.out.println("ContextStartedEvent Received");

   }

}

کد زیر نیز مربوط به فایل CStopEventHandler.java است :



package com.tutorialspoint;

 

import org.springframework.context.ApplicationListener;

import org.springframework.context.event.ContextStoppedEvent;

 

public class CStopEventHandler 

   implements ApplicationListener{

 

   public void onApplicationEvent(ContextStoppedEvent event) {

      System.out.println("ContextStoppedEvent Received");

   }

}

محتویات فایل اصلی برنامه MainApp.java به این صورت است :



package com.tutorialspoint;

 

import org.springframework.context.ConfigurableApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

public class MainApp {

   public static void main(String[] args) {

      ConfigurableApplicationContext context = 

      new ClassPathXmlApplicationContext("Beans.xml");

 

      // Let us raise a start event.

      context.start();

           

      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

 

      obj.getMessage();

 

      // Let us raise a stop event.

      context.stop();

   }

}

در نهایت نیز ، کد فایل پیکربندی اطلاعات برنامه Bean.xml به صورت زیر تعریف می شود :


xml version="1.0" encoding="UTF-8"?>

 

 xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

 

    id="helloWorld" class="com.tutorialspoint.HelloWorld">

       name="message" value="Hello World!"/>

   

 

    id="cStartEventHandler" 

         class="com.tutorialspoint.CStartEventHandler"/>

 

    id="cStopEventHandler" 

         class="com.tutorialspoint.CStopEventHandler"/>

پس از اینکه فایل های برنامه را ایجاد کردیم ، می توانیم آن را اجرا کنیم . در صورت درست بودن همه موارد ، خروجی زیر تولید خواهد شد ،



ContextStartedEvent Received

Your Message : Hello World!

ContextStoppedEvent Received

در آخر هم اگر دوست داشتید ، می توانید رویدادهای دلخواه خود را نوشته و عملکرد آنها را در برنامه تست کنید .
برای نوشتن رویدادهای دلخواه خود ، به درس آموزش نوشتن Custom Events بروید .


Visit W3Schools.com!
Visit W3Schools.com!
1395/05/28 3539 1405
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...